genpop                package: -                R Documentation

Realiza o Teste de X^2 de Aderência para determinar se uma ou mais populações encontram-se em Equilíbrio de Hardy-Weinberg e alternativamente calcula o Índice de Fixação (FIT, FST e FIS). Além disso, produz gráficos das frequências genotípicas observadas e esperadas, bem como das frequências alélicas.

Description:

Testa se diferentes populações encontram-se em Equilíbrio de Hardy-Weinberg pelo teste de X^2 de Aderência, comparando o p-valor calculado a um nível de significância do teste estipulado pelo usuário ou calcula o Índice de Fixação, em seus componentes FIT, FST e FIS. A partir de uma tabela (classe: data.frame) contendo frequências genotípicas observadas de um gene bialélico e tamanho populacional para diferentes populações ou de uma tabela (classe: data.frame) contendo o genótipo e a população a que cada indivíduo pertence.

Usage:

genpop(dados, modo="ehw", alfa=0.05, input="freq", graphics="on")

Arguments:

dados		um objeto da classe “data.frame” contendo nas linhas as populações (quantas forem necessárias) e nas colunas as frequências (valor numérico entre 0 e 1) genotípicas observadas de um gene bialélico (3 colunas = 2 homozigotos + 1 heterozigoto), seguidas de uma coluna contendo o tamanho populacional de cada população (totalizando 4 colunas), neste caso deve-se utilizar o argumento input = "freq"; Ou um objeto da classe "data.frame" contendo nas linhas os indivíduos (quantos forem necessários) e nas colunas o genótipo do indivíduo e a população a que este pertence (totalizando 2 colunas). Ver a seção 'Examples' desta documentação da função para exemplos de objetos de entrada.

modo 		uma “string” de caracteres específica que condiciona o modo de funcionamento da função; modo = “ehw” determina que a função irá testar se a(s) população(ões) encontram-se em Equilíbrio de Hardy-Weinberg; modo = “fit”: determina que a função irá calcular o índice de fixação nas suas porções FIS, FST e FIT.

alfa		um valor númerico indicando a significância do teste estatístico a ser realizado; É desconsiderado no modo “fit”.

input		uma “string” de caracteres que especifica o tipo de arquivo de entrada usado na função; input = "freq" quando o objeto de entrada é o padrão da função, com valores de frequências genotípicas e tamanho populacional para cada população; input = "raw" quando o objeto de entrada contem apenas a informação sobre o genótipo e a população de cada indivíduo.

graphics	uma “string” de caracteres que determina se serão construídos gráficos das frequências genotípicas observadas e esperadas, assim como das frequências alélicas; graphics = "on" para que os gráficos sejam gerados; graphics = "off" para que os gráficos não sejam gerados.

Value:

Em seu uso padrão, argumento modo = "ehw", a função produz uma tabela (classe: data.frame) com as populações nas linhas e nas colunas os valores de indivíduos observados e esperados sobre EHW para cada genótipo, bem como os valores de X^2 calculados, p-valor e o resultado de um teste lógico, que compara o p-valor estimado para cada população com o nível de significância do teste estipulado pelo usuário através do argumento "alfa". Quando o p-valor (P[X ≤ x]) é menor do que 1 - "alfa", o teste retorna o valor TRUE na coluna EHW, indicando que a população está em EHW.

A segunda funcionalidade, argumento modo = "fit", gera uma tabela (classe: data.frame) contendo 3 colunas, uma para cada índice (FIT, FST e FIS) e apenas uma linha com os valores dos índices calculados.

Em ambos os modos, dado o argumento 'graphics' = "on", são gerados 2 tipos de gráficos para cada população do conjunto de dados analisados. Um gráfico de barras contendo as frequências genotípicas observadas como barras em cinza e as frequências genotípicas esperadas sob Equilíbrio de Hardy-Weinberg como barras transparentes com bordas vermelhas sobrepostas as barras anteriores, por fim no eixo Y encontra-se uma escala de frequência e no X os diferentes genótipos. Também é gerado um segundo gráfico de barras com os valores de frequências alélicas, na forma de barras em cinza e com a escala de frequência no eixo Y e os alelos no eixo X.

Warning:

A função emite mensagens de erro nas seguintes situações: quando pelo menos um valor das frequências genotípicas observadas não está contido no intervalo de 0 a 1; se pelo menos um valor de tamanho populacional não é maior do que 0; se houver qualquer valor faltante (NA) no objeto inserido no argumento 'dados'; se a string de caracteres fornecida para o argumento 'modo' é diferente de "ehw" e "fit"; quando o valor fornecido ao argumento 'alfa' não está contido no intervalo de 0 a 1; se o objeto inserido no argumento 'dados' não é um data.frame; a função também retorna uma mensagem (Warning message) quando o argumento graphics = "off", avisando que os gráficos estão desativados.
 
Note:

Atentar para o fato de que os objetos de entrada devem ser objetos da classe "data.frame", com a formatação descrita na seção 'Arguments' desta documentação e evitando os erros mais comuns descritos na seção 'Warning' desta documentação, para que a função opere corretamente. Por isso recomenda-se realizar previamente uma análise exploratória dos dados de modo a encontrar, corrigir ou omitir os erros e dados faltantes para que a função possa ser utilizada.

Para tornar possível visualizar os gráficos gerados recomenda-se utilizar o software RStudio (https://www.rstudio.com/), navegando através dos gráficos pela aba 'Plots' da interface gráfica do mesmo. Caso contrário é necessário alterar os parâmetros da construção de gráficos para permitir que todos os gráficos sejam gerados sem sobreposição em um único dispositivo gráfico, por exemplo através do argumento 'mfrow' da função 'par' (ver seção 'Examples' desta documentação). Entretanto, para um número elevado de populações recomenda-se particionar o conjunto de dados em porções menores de populações para a entrada na função e criação dos gráficos. É interessante também criar um dispositivo gráfico de vizualização através da função 'X11' e maximizar a janela criada antes de plotar os gráficos, de modo que a utilização do espaço seja otimizada e evite a sobreposição dos elementos gráficos.

Author(s):

Marcos Araújo Castro e Silva
macsilva@usp.br

São Paulo, 23 de Junho de 2017.

References:

RIDLEY, M (2006). Evolution. Oxford: Blackwell Science Ltd. 752 p.

See Also:

Funcoes: X11(), par().

Examples:

## Input padrão:
pops=c("Esquimós","Aborígenes Australianos","Egípcios","Alemães","Chineses","Nigerianos") # Cria um vetor com o nome das populações.
MM=c(0.835,0.024,0.278,0.297,0.332,0.301) # Cria um vetor com os valores de frequências do genótipo MM para cada população.
Mm=c(0.156,0.304,0.489,0.507,0.486,0.495) # Cria um vetor com os valores de frequências do genótipo Mm para cada população.
mm=c(0.009,0.672,0.233,0.196,0.182,0.204) # Cria um vetor com os valores de frequências do genótipo mm para cada população.
n=c(rep(1000,6)) # Cria um vetor contendo valores de tamanho populacional para cada população, nesse caso todas as populações possuem 1000 indivíduos.
humans=data.frame(MM,Mm,mm,n) # Cria um objeto contendo o data frame com as frequências genotípicas.
rownames(humans)=pops # Renomeia as linhas com os nomes das populações contidos no objeto pops.
rm(pops, MM, Mm, mm, n) # Remove os objetos usados para criar o dataframe de exemplo.

x11() # Cria um dispositivo gráfico de visualização. MAXIMIZE A JANELA ANTES DE PLOTAR OS GRÁFICOS, assim você evita a sobreposição de elementos gráficos, conforme discutido na seção 'Notes' da documentação.
par(mfrow=c(4,3)) # Altera os parâmetros gráficos, para permitir a criação de 12 gráficos no dispositivo gráfico (4 linhas e 3 colunas).
genpop(humans) # Utiliza a função 'genpop' sobre o objeto 'humans', com os argumentos padrões da função (genpop(dados, modo="ehw", alfa=0.05, input="freq", graphics="on")). 
par(mfrow=c(1,1)) # Retorna ao padrão os parâmetros gráficos.

genpop(humans, graphics = "off") # Utiliza a função com a criação de gráficos desabilitada.

genpop(humans, alfa = 0.1) # Utiliza a função com o nível de significância para o teste de X^2 (argumento alfa) igual a 0.1.

genpop(humans, modo = "fit") # Utiliza a função no modo de cálculo do Índice de fixação.

## Input bruto:
Pop1 <- sample(c("AA","Aa","aa"), 1000, replace=TRUE, prob=c(0.3, 0.5, 0.2)) # Cria vetores contendo cada um dos genótipos (AA, Aa, aa), amostrados com as probabilidades definidas pelo argumento prob.  
Pop2 <- sample(c("AA","Aa","aa"), 500, replace=TRUE, prob=c(0.7, 0.15, 0.15)) 
Pop3 <- sample(c("AA","Aa","aa"), 650, replace=TRUE, prob=c(0.3, 0.45, 0.25))
Pop4 <- sample(c("AA","Aa","aa"), 2000, replace=TRUE, prob=c(0.2, 0.6, 0.2))
Pop5 <- sample(c("AA","Aa","aa"), 850, replace=TRUE, prob=c(0.05, 0.9, 0.05))
Pop6 <- sample(c("AA","Aa","aa"), 5000, replace=TRUE, prob=c(0.3, 0.6, 0.1))
alleles=c(Pop1,Pop2,Pop3,Pop4,Pop5,Pop6) # Cria um vetor a partir da concatenação dos vetores criados anteriormente.
alleles=data.frame(gen=alleles, pop=rep(paste("Pop",c(1:6),sep=""), times=c(1000,500,650,2000,850,5000))) # Cria um data.frame a partir do vetor 'alleles' e de um vetor contendo a população a que cada indivíduo pertence.
rm(Pop1,Pop2,Pop3,Pop4,Pop5,Pop6) # Remove os objetos usados para criar o dataframe de exemplo.


genpop(alleles, input = "raw") # Utiliza a função 'genpop' sobre o objeto 'alleles', com os argumentos padrões da função, exceto o argumento input = "raw", aqui utilizado pelo natureza do objeto de entrada.

genpop(alleles, modo = "fit", input = "raw") # Utiliza a função no modo de cálculo de Índice de fixação.


